## P.2.1: Minimal values of phi_euler (see P.2.1)

from PyM import *

def PN(k):
    p = 2
    N = 1; P = 2
    j = 1
    T = {j:(p,N,P,N/P)}    
    while j<k:
        p = next_prime(p+1)
        N *= (p-1); P *= p
        j += 1
        T[j] = (p,N,P,N/P)  
    return T
        
k = 11

T = PN(k)

K = [j+1 for j in range(k)]

pk = [T[j][0] for j in K]

Pk = [T[j][2] for j in K]

decimals(4)

mk = vector([T[j][3] for j in K])

show(matrix([K,pk,Pk,mk]))



## Graphics
# Points
O = (0,0); X = (11.2,0); Y = (0,0.6)

close('all')

ax = plt.figure("Minimal values of $\phi(n)/n$", figsize=(9,2))
plt.xlim(-0.2,11.2)
plt.ylim(0.0,0.6)
plt.axis('off')

for j in K: 
    bullet((j,mk[j-1]), color='blue')
    seg((j,0),(j,mk[j-1]),lw=1)


# Lines
seg(O,X,lw=2)
seg(O,Y,lw=2)
seg((0,0.5),(1,0.5),lw=1)

dx = 0.1
lable((0,0.5),'$0.5$',dx=-6*dx,dy=-0.15*dx,fs=14)

plt.show()   

# Anothe graphic
from math import log
logPk=[round(log(x,10),3) for x in Pk]